نصب Activex يا dll در دستگاه کاربرانتان
 
راز شب 14
نرم افزار - شعر - عـکس
 
 

در اين مقاله ياد خواهيد گرفت که چگونه با استفاده از کد نويسي در دلفي Activex يا dll مورد نياز برنامه خود را در دستگاه کاربرانتان نصب کنيد.
براي رسيدن به اين هدف از دستور regsvr32.exe استفاده مي کنيم.
اين دستور يکي از دستورات ويندوز است که براي رجيستر کردن Activex يا dll ها بکار مي رود.
خط فرمان اين دستور به شکل زير مي باشد.

Regsvr32 [/u] [/s] [/n] [/i[:cmdline]] dllname
/s – در موقع نصب هيچ پيام يا پنجره اي نمايش نده
/u – حذف فايل

ما با استفاده از اين دستور ويندوز و کد دلفي زير مي توانيم به نتيجه مورد نظر خود برسيم.

procedure RegisterOCX;
type
TRegFunc = function : HResult; stdcall;
var
ARegFunc : TRegFunc;
aHandle : THandle;
ocxPath : string;
begin
try
ocxPath := ExtractFilePath(Application.ExeName) + 'Flash.ocx';
aHandle := LoadLibrary(PChar(ocxPath));
if aHandle <> 0 then
begin
ARegFunc := GetProcAddress(aHandle,'DllRegisterServer');
if Assigned(ARegFunc) then
begin
ExecAndWait('regsvr32','/s ' + ocxPath);
end;
FreeLibrary(aHandle);
end;
except
ShowMessage(Format('Unable to register %s', [ocxPath]));
end;
end;

در روال بالا مقدار ocxpath برابر با مسير فايل dll يا ocx ما مي باشد. ممکن است نصب يک dll ياocx طول بکشد و بعد از اجراي روال بالا دستور لازم براي نصب صورت گرفته و برنامه ادامه کار خود را پيگيري مي کند. اگر اين مدت زمان زياد باشد برنامه شما اجرا شده ولي هنوز dll يا ocx رجيستر نشده است. به همين منظور از تابع ExecAndWait استفاده مي کنيم. اين تابع بعد از اجراي يک دستور منتظر مي ماند تا کار به طور کامل انجام پذيرد. کد اين تابع به شرح ذيل مي باشد.

uses shellapi;
...
function ExecAndWait(const ExecuteFile, ParamString : string): boolean;
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
begin
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(ExecuteFile);
lpParameters := PChar(ParamString);
nShow := SW_HIDE;
end;
if ShellExecuteEx(@SEInfo) then
begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess, ExitCode);
until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
Result:=True;
end
else Result:=False;
end;

اميدوارم که از اين مقاله استفاده لازم را برده باشيد.


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:






ارسال شده در تاریخ : یک شنبه 19 شهريور 1390برچسب:, :: 22:30 :: توسط : رضا بوالحسنی

درباره وبلاگ
سلام به وبلاگه من خوش امدید لطفا ایمیلتون رو توی خبرنامه وبلاگم پبت کنید تا زمانی که آپ کردم بهتون خبر بدم و خواهشا توی نظر سنجی وبلاگم شرکت کنید . مرسی
آخرین مطالب
نويسندگان
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان راز شب 14 و آدرس raze-shabe14.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.






ورود اعضا:

نام :
وب :
پیام :
2+2=:
(Refresh)

<-PollName->

<-PollItems->

خبرنامه وب سایت:





آمار وب سایت:  

بازدید امروز : 4
بازدید دیروز : 11
بازدید هفته : 4
بازدید ماه : 501
بازدید کل : 57315
تعداد مطالب : 79
تعداد نظرات : 396
تعداد آنلاین : 1